package educar.resolucion;

import java.sql.ResultSet;
import java.sql.SQLException;

import java.sql.PreparedStatement;

import educar.correccion.Correccion;
import educar.correccion.CorreccionNoEncontrada;
import educar.db.*;


public class ResolucionController{
	private static JPA jpa = new JPA();

	public static boolean existe (String cod) {
		try {
			Resolucion doc = getResolucion(cod);
			return true;
		} catch (ResolucionNoEncontrada ex) {
			return false;
		}
	}
	
	/**
	 * Este metodo nos permite agregar un nuevo registro en la tabla resulucion.
	 * 
	 * @param resolucion
	 */
	public static void save(Resolucion resolucion) {
		String[] columns = { "actividad_nro", "alumno_dni","fecha","hora","resolucion" };

		PreparedStatement stm = jpa.newRecord(DbConnection.bd+".resolucion", columns);
		try {
			stm.setString(1, resolucion.getNroActiv());
			stm.setString(2, resolucion.getDni());
			stm.setString(3, resolucion.getFecha());
			stm.setString(4, resolucion.getHora());
			stm.setString(5, resolucion.getResolucion());
		} catch (SQLException e) {
			e.printStackTrace();
		}
		jpa.create(stm);
		
	}
	
	/**
	 * Retorna una instancia de la clase resolucion obteniada de la base de datos.
	 * @param cod
	 * @return
	 * @throws ResolucionNoEncontrada
	 */
	public static Resolucion getResolucion (String cod) throws ResolucionNoEncontrada {
		ResultSet rs = null;
		Resolucion res= null;

		rs = jpa.getByField("resolucion", "resolucion_cod", cod);
		
		try {
			if (rs.next()) {
				res = new Resolucion (rs.getString(1), rs.getString(2), rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6));
			} else {
				throw new ResolucionNoEncontrada();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return res;
	}
	
	/**
	 * Chequea la existencia de una resolucion en la tabla que lleva el mismo nombre.
	 * @param dni
	 * @return
	 */
	public static boolean existe2 (String dni){
		try {
			Resolucion rec = getResolucionDni(dni);
			return true;
		} catch (ResolucionNoEncontrada ex) {
			return false;
		}
	}
	
	/**
	 * Retorna una instancia de la clase resolucion, filtrada por el DNI del alumno, obteniada de la base de datos.
	 * @param dni
	 * @return
	 * @throws ResolucionNoEncontrada
	 */
	public static Resolucion getResolucionDni (String dni)throws ResolucionNoEncontrada {
		ResultSet rs = null;
		Resolucion res= null;
		rs = jpa.getByField("resolucion", "alumno_dni", dni);
		try {
			if (rs.next()) {
				res = new Resolucion (rs.getString(1), rs.getString(2), rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6));
			} else {
				throw new ResolucionNoEncontrada();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

		
		return res;
	}
	
	/**
	 * 
	 * @param columnas
	 * @param dni
	 * @return
	 */
	public static ResultSet listar (String columnas,String dni){
		ResultSet rs = null;
		rs = jpa.listar("resolucion",columnas, "alumno_dni",dni);
		return rs;
	}

}
